0d87707e8245dd6629b8fa204ec3994ba763f5bd,core/runtime/source/jetbrains/mps/util/Interner.java,DumbestLRUCache,primCacheObject,#K#K#,150

Before Change


      if (transitionalCache.putIfAbsent(canonic, canonic) == null) {
        K cached;
        cached = firstLevelCache.putIfAbsent(canonic, canonic);
        if (cached != null) {
          return cached;
        }

        // current thread has a mutex on 'canonic'
        firstLevelQueue.add(canonic);

        if (roomLeftFirstLevel.decrementAndGet() <= 0) {

          K toRemove = firstLevelQueue.peek();
          assert toRemove != null;

          if (transitionalCache.putIfAbsent(toRemove, toRemove) == null) {
            if (firstLevelQueue.remove(toRemove)) {
              boolean removed = firstLevelCache.remove(toRemove, toRemove);
              assert removed;
              roomLeftFirstLevel.incrementAndGet();

After Change


            transitionalCache.remove(toRemove, toRemove);
          }
          else {
            firstLevelQueue.add(toRemove);
          }
        }